package com.bjpowernode.api.serivce;

import com.bjpowernode.api.dto.ProductBidInfo;
import com.bjpowernode.api.dto.ProductCollection;
import com.bjpowernode.api.dto.ProductIncomeInfo;
import com.bjpowernode.api.model.Product;

import java.util.List;

/**
 * @author 麦翔盛
 * @ClassName: ProductService
 * @Package: com.bjpowernode.api.serivce
 * @description: 投资产品 逻辑 接口
 * @date 2022/5/14 21:06
 */
public interface ProductService {
    /**
     * 获取主要理财产品的列表
     * @return 三种主要理财产品的数据
     */
    ProductCollection queryMainProductList();

    /**
     * 根据产品类型获取产品
     * @param productType 产品类型编号
     * @param pageNo 页码
     * @param pageSize 每页显示数量
     * @return product list
     */
    List<Product> queryProductByTypePage(Integer productType, Integer pageNo, Integer pageSize);

    /**
     * 计算不同类型的产品数量
     * @param productType 产品类型
     * @return product number
     */
    Integer computerCountByType(Integer productType);

    /**
     * 根据id获取产品数据
     * @param id 产品id
     * @return 产品数据
     */
    Product queryProductById(Integer id);

    /**
     * 根据用户id查询用户的投资记录
     * @param uid 用户id
     * @param pageNo 第几页
     * @param pageSize 限制每页记录数
     * @return  ProductBidInfo
     */
    List<ProductBidInfo> queryProductBidInfoByUid(Integer uid, Integer pageNo, Integer pageSize);

    /**
     * 根据用户id分页带条件查询用户收益信息
     * @param uid 用户id
     * @param pageNo 第几页
     * @param pageSize 限制每页记录数
     * @return ProductIncomeInfo
     */
    List<ProductIncomeInfo> queryProductIncomeInfoByUid(Integer uid, Integer pageNo, Integer pageSize);
}
